package com.zjsru.plan2025.oneday;

/**
 * 2829. k-avoiding 数组的最小总和
 *
 * @Author: cookLee
 * @Date: 2025-03-26
 */
public class MinimumSum {

    /**
     * 主
     * \
     * 输入：n = 5, k = 4
     * 输出：18
     * 解释：设若 k-avoiding 数组为 [1,2,4,5,6] ，其元素总和为 18 。
     * 可以证明不存在总和小于 18 的 k-avoiding 数组。
     * \
     * 输入：n = 2, k = 6
     * 输出：3
     * 解释：可以构造数组 [1,2] ，其元素总和为 3 。
     * 可以证明不存在总和小于 3 的 k-avoiding 数组。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        MinimumSum minimumSum = new MinimumSum();
        int n = 5;
        int k = 4;
        System.out.println(minimumSum.minimumSum(n, k));
    }

    /**
     * 贪心
     *
     * @param n n
     * @param k k
     * @return int
     */
    public int minimumSum(int n, int k) {
        int sum = 0;
        int count = 0;
        int add = 1;
        int c = k;
        while (count < n) {
            //当前值不会与后续可能加入的值构成和为 k 的组合
            if (add <= k / 2) {
                sum += add++;
            } else {
                //避免后续有值在k/2到k之间导致元素对为k
                sum += c++;
            }
            count++;
        }
        return sum;
    }
}
